﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Chilis.Marketing.Common;
using Chilis.Marketing.Business.Logic;
using Chilis.Marketing.Business.Entity;
using System.Data;
using System.Text;

public partial class Opera_Arte : System.Web.UI.Page
{
    #region ATRIBUTOS

    private Constantes.ACCION accion;
    private BLCampanha campanhaBL;
    private BLArte arteBL;

    #endregion

    #region PROPIEDADES
    #endregion

    #region METODOS

    private void ActivarControles(bool activo)
    {
        this.txtCodigoCampanha.Enabled = false;
        this.txtNombreCampanha.Enabled = false;
        this.txtCreativo.Enabled = false;
    }

    private void CargarDatos(int idCampanha)
    {
        this.campanhaBL = new BLCampanha();
        BECampanha campanhaBE = this.campanhaBL.obtenerCampanhaPorId(idCampanha);
        if (campanhaBE != null)
        {
            this.txtCodigoCampanha.Text = campanhaBE.IdCampanha.ToString().PadLeft(5, '0');
            this.txtNombreCampanha.Text = campanhaBE.Nombre.ToString();

            if (campanhaBE.Creativo != null)
            {
                this.txtIdCreativo.Value = campanhaBE.Creativo.IdTrabajador.ToString();

                string nombreCompleto = campanhaBE.Creativo.ApellidoPaterno.ToUpper();
                nombreCompleto += (campanhaBE.Creativo.ApellidoMaterno != string.Empty ? " " + campanhaBE.Creativo.ApellidoMaterno.ToUpper() : string.Empty);
                nombreCompleto += (campanhaBE.Creativo.Nombres != string.Empty ? ", " + campanhaBE.Creativo.Nombres : string.Empty);
                this.txtCreativo.Text = nombreCompleto;
            }
        }
    }

    public void CargarGrillaListadoArtes(bool deBuscar)
    {
        if (deBuscar == true)
        {
            this.gvArtes.PageIndex = 0;
        }

        int tempIdCampanha = Constantes.idValorNulo;
        int.TryParse(this.txtCodigoCampanha.Text, out tempIdCampanha);

        this.campanhaBL = new BLCampanha();
        DataTable dt = this.campanhaBL.obtenerArtesPorIdCampanha(tempIdCampanha);
        this.gvArtes.DataSource = dt;
        this.gvArtes.DataBind();
    }

    private void CargarTitulos(string tituloTxt)
    {
        this.lblTitulo.Text = tituloTxt;
    }

    private void ProcesarEliminarArte(string idArte)
    {
        this.arteBL = new BLArte();
        BEArte arteBE = new BEArte();
        arteBE.IdArte = int.Parse(idArte);
        arteBE.Estado = Constantes.ESTADO.INACTIVO;
        this.arteBL.eliminarArte(arteBE);
        this.CargarGrillaListadoArtes(true);
    }

    private void ProcesarAprobarArte(string idArte)
    {
        this.arteBL = new BLArte();
        BEArte arteBE = new BEArte();
        arteBE.IdArte = int.Parse(idArte);
        this.arteBL.aprobarArte(arteBE);
        this.CargarGrillaListadoArtes(true);
    }

    private void ConfigurarVerDetalleArte(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnVerDetalle = (ImageButton)fila.FindControl("btnVerDetalle");
        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetArte.aspx?acc=" + Constantes.ACCION.VER.ToString("D") + "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetArte('{0}')", cadenaURL));
        imgTempBtnVerDetalle.Attributes.Add("onclick", click.ToString());
    }

    private void ConfigurarModificarArte(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnModificar = (ImageButton)fila.FindControl("btnModificar");
        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetArte.aspx?acc=" + Constantes.ACCION.MODIFICAR.ToString("D") + "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetArte('{0}')", cadenaURL));
        imgTempBtnModificar.Attributes.Add("onclick", click.ToString());
    }
    private void ConfigurarEliminarArte(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnEliminar = (ImageButton)fila.FindControl("btnEliminar");
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return EliminarArte('{0}')", lblTempCodigo.Text));
        imgTempBtnEliminar.Attributes.Add("onclick", click.ToString());
    }

    private void ConfigFuncDescargar(GridViewRow fila)
    {
        ImageButton imgTempDescargarEPG = (ImageButton)fila.FindControl("btnDescargar");

        StringBuilder click = new StringBuilder();
        string idArte = ((Label)fila.FindControl("lblCodigo")).Text;

        Label lblTempIdTipoArchivo= (Label)fila.FindControl("lblIdTipoArchivo");
        int tempIdTipoArchivo = 0;
        int.TryParse(lblTempIdTipoArchivo.Text, out tempIdTipoArchivo);

        if (tempIdTipoArchivo > 0)
        {
            click.AppendLine(String.Format("window.open('../Gral/VisDocumento.ashx?id={0}','modal','scrollbars=yes,resizable=yes');", idArte));
            imgTempDescargarEPG.Attributes.Add("onclick", click.ToString());
        }
        else
        {
            click.AppendLine("alert('No hay archivo adjunto. Por favor revisar.'); return false;");
            imgTempDescargarEPG.Attributes.Add("onclick", click.ToString());
        }
    }

    private void ConfigurarAprobarArte(GridViewRow fila)
    {
        Label lblTempCorrelativo = (Label)fila.FindControl("lblCorrelativo");
        ImageButton imgTempBtnAprobar = (ImageButton)fila.FindControl("btnAprobar");
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return AprobarArte('{0}')", lblTempCorrelativo.Text));
        imgTempBtnAprobar.Attributes.Add("onclick", click.ToString());
    }

    private void ConfigurarVisualizacionOpciones(GridViewRow fila)
    {
        //===========================================================
        //REVISAR LA VISUALIZACIÓN DE LA OPCION DESCARGAR
        //===========================================================
        Label lblTempIdTipoArchivo = (Label)fila.FindControl("lblIdTipoArchivo");
        ImageButton imgTempBtnDescargar = (ImageButton)fila.FindControl("btnDescargar");

        int tempIdTipoArchivo = Constantes.idValorNulo;
        int.TryParse(lblTempIdTipoArchivo.Text, out tempIdTipoArchivo);

        if (tempIdTipoArchivo == 0)
        {
            imgTempBtnDescargar.Visible = false;
        }


        //===========================================================
        //REVISAR LA VISUALIZACIÓN DE LA OPCION APROBAR
        //===========================================================
        Label lblTempAprobado = (Label)fila.FindControl("lblAprobado");
        ImageButton imgTempBtnAprobar = (ImageButton)fila.FindControl("btnAprobar");

        int tempAprobar = Constantes.idValorNulo;
        Constantes.ESTADO_ARTE estadoArte = Constantes.ObtenerEnumEstadoArte(lblTempAprobado.Text);

        if (estadoArte == Constantes.ESTADO_ARTE.APROBADO)
        {
            imgTempBtnAprobar.Visible = false;
        }
    }

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                ControlHelper.RegisterClientScriptFile(this, "jquery.js", true);
                ControlHelper.RegisterClientScriptFile(this, "json2.js", true);
                ControlHelper.RegisterClientScriptFile(this, "thickbox.js", true);
                ControlHelper.RegisterClientScriptFile(this, "arte.js", true);

                if (Request.QueryString["idcmp"] != null)
                {
                    int idCampanha = int.Parse(Request.QueryString["idcmp"].ToString());
                    this.CargarDatos(idCampanha);
                    this.ActivarControles(false);
                    this.CargarGrillaListadoArtes(true);
                    this.AddArte.HRef = "~/Gral/DetArte.aspx?acc=" + Constantes.ACCION.NUEVO.ToString("D") + "&idcmp=" + idCampanha.ToString() + "&TB_iframe=true&height=420&width=620";
                }
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_MostrarDetalle + "&descError=" + ex.Message, false);
        }
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Default.aspx");
    }

    protected void gvArtes_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
        accion = Constantes.ObtenerEnumAccion(e.CommandName);

        if (accion == Constantes.ACCION.NINGUNO)
        {
            return;
        }

        GridViewRow fila = ((GridViewRow)((Control)e.CommandSource).NamingContainer);
        string idArte = ((Label)fila.FindControl("lblCodigo")).Text;


        switch (accion)
        {
            case Constantes.ACCION.NINGUNO:
                break;
            case Constantes.ACCION.VER:
                break;
            case Constantes.ACCION.NUEVO:
                break;
            case Constantes.ACCION.MODIFICAR:
                break;
            case Constantes.ACCION.ELIMINAR:
                this.ProcesarEliminarArte(idArte);
                break;
            case Constantes.ACCION.ASOCIAR:
                break;
            case Constantes.ACCION.APROBAR:
                this.ProcesarAprobarArte(idArte);
                break;
            case Constantes.ACCION.GENERAR_REPORTE:
                break;
            case Constantes.ACCION.ANULAR:
                break;
            default:
                break;
        }
    }

    protected void gvArtes_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow fila = e.Row;
            this.ConfigurarVerDetalleArte(fila);
            this.ConfigurarModificarArte(fila);
            this.ConfigurarEliminarArte(fila);
            this.ConfigFuncDescargar(fila);
            this.ConfigurarAprobarArte(fila);

            this.ConfigurarVisualizacionOpciones(fila);
        }
    }

    protected void gvArtes_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvArtes.PageIndex = e.NewPageIndex;
        this.CargarGrillaListadoArtes(false);
    }

    #endregion
    
}